//
// Created by lihengliu on 2023/4/3.
//
#include <cstdint>

#ifndef FFPLAYERDEMO_AUDIOVIDEO_H
#define FFPLAYERDEMO_AUDIOVIDEO_H
#endif //FFPLAYERDEMO_AUDIOVIDEO_H

void initFFmpeg();//注册组件
void initFFmpegInfo(const char *path);//初始化FFmpegInfo结构体、音频解码器和视频解码器
void destroyFFmpegInfo();//free FFmpegInfo
void read();//启动读数据线程
void startDecodec();//启动音频解码线程和视频解码线程
void stopDecodec();//停止解码
void initPOSIXInfo();//初始化POSIX多线程需要的一些类型
void destroyPOSIXInfo();//free

typedef struct {
    void *(*startDecodecVideo)(void *);

    void *(*onDecodecVideo)(uint8_t *, uint32_t, uint32_t, uint32_t, int64_t);

    void *(*endDecodecVideo)(void *);

    void *(*startDecodecAudio)(int32_t, int32_t);

    void *(*onDecodecAudio)(uint8_t *, int32_t);

    void *(*endDecodecAudio)(void *);
} DecodecListener;//解码回调接口

void setDecodecListener(DecodecListener* decodecListener);//设置监听接口